package com.结构型模型.J组合模式;

/**
 *这里的MenuComponent定义为抽象类，因为有一些共有的属性和行为要在该类中实现，
 * Menu和 MenuItem类就可以只覆盖自己感兴趣的方法，而不用搭理不需要或者不感兴趣的方法，
 * 举例来说， Menu类可以包含子菜单，因此需要覆盖add()、remove()、getChild()方法，
 * 但是MenuItem就不 应该有这些方法。这里给出的默认实现是抛出异常，你也可以根据自己的需要改写默认实现
 */
public abstract class MenuComponent {

    protected  String name;
    protected  int level;

    void  add(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    void  remove(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    MenuComponent getChild(int i){
        throw new UnsupportedOperationException();
    }

    public String getName() {
        return name;
    }

    void print(){
        throw new UnsupportedOperationException();
    }

}
